<?php
/**
 * Mostra les funcions pendents de testejar a la PHP TestFest
 */

/**
 * recuperem la classe HTTP que recupera les dades
 */
require_once 'Zend/Http/Client.php';

/**
 * recuperem el gestor de cache
 */
require_once 'Zend/Cache.php';

/**
 * preparem tot el tema de la cache per a no haver 
 * de recuperar-ho cada cop
 */

$frontendOptions = array(
   'lifetime' => 3600, // 1 hora
   'automatic_serialization' => true
);

$backendOptions = array(
    'cache_dir' => '/tmp/' 
);

$cache = Zend_Cache::factory('Core',
                             'File',
                             $frontendOptions,
                             $backendOptions);

/**
 * si la caché és activa no recuperem la plana
 */                             
if (!$buffer = $cache->load('testfestFunctions'))
{

	/**
	 * recuperem la palana amb les funcions pendents de testeig
	 */
	$client = new Zend_Http_Client("http://gcov.php.net/viewer.php?version=PHP_5_3&func=tested_functions");
	$request = $client->request();
	$buffer = $request->getBody();
	
	$cache->save($buffer,'testfestFunctions');
}

/**
 * triem el que hi ha entre <tr>
 */
$pattern = "/<tr>(.*)<\/tr>/smU";
preg_match_all($pattern,$buffer,$rTR);


/**
 * processarem a pinyó el que ens trobem.
 * Si canvia el disseny de la plana caldrar
 * tornar a fer try-on-error
 */
$pattern = "/<td.*>(.*)<\/td>/smU";
$nTR = count($rTR[1]);
//var_dump($rTR);

echo "<pre><h1>PHP TestFest - funcions no testejades</h1>";
for ($i = 4; $i < $nTR; $i++)
{
	/**
	 * trobem tots els <td> que hi ha a cada registre 
	 */
	preg_match_all($pattern,$rTR[1][$i],$rTD);
	
	/**
	 * Només mostrem els que estan pendents de testeig
	 */
	if ($rTD[1][3] != 'yes')
	{
		echo "{$rTD[1][0]} {$rTD[1][1]} <a href=\"http://php.net/{$rTD[1][2]}\" target=\"_blank\">{$rTD[1][2]}</a><br>";
	}
	//var_dump($rTD);
}
?>